本博文使用了rollup打包,这里同时提供了简明的搭建环境的说明,通过第一部分1.环境搭建
就可以在本地配置搭建环境。有关rollup的详细安装使用说明可以查看我的另外一篇博客:《rollup + es6最佳实践》
我们首先把《一步一步DIY一个自己jQuery库1》的代码使用es6模块化的方式打包好
【注】所有代码挂在我的github上
1.搭建环境
1.1 目录结构
1 | - src |
- src是源代码文件夹,其中
jquery.js
是入口文件 - bundle是编译后的文件
- package.json是包管理文件
rollup.config.dev.js
是rollup的配置文件test.html
是测试文件,引入<script src="bundle.js"></script>
即可测试
1.2 npm安装
1 | npm i rollup rollup-plugin-babel babel-preset-es2015-rollup --save-dev |
1.3 使用配置编译
新建文件,文件名为rollup.config.dev.js
1 | import babel from 'rollup-plugin-babel'; |
src中.babelrc
1 | { |
注意{ "modules": false }
一定要有,否则一直报错
执行命令:rollup -c rollup.config.dev.js
,就能得到编译后的文件bundle.js
。这里使用的是【umd】的形式,这是jquery的发布版本的格式,当然还有其他的一些格式,amd / es6 / cjs / iife
2.打包
jquery.js
1 | // 出口 |
core.js
1 | var version = "0.0.1", |
init.js
1 | var init = function(jQuery){ |
global.js
1 | var global = function(jQuery){ |
打包后bundle.js
1 | (function (global, factory) { |
3.增加基础工具模块&完善extend方法
我们在《一步一步DIY一个自己jQuery库1》中说过extend方法的不完善的地方
- 使用
isObject
,isArray
并不严谨。在某些浏览器中,像 document 在 Object.toSting 调用时也会返回和 Object 相同结果;
新增一个util.js
1 | export var class2type = {}; //在core.js中会被赋予各类型属性值 |
在core.js
中修改/新增代码
- 导入
1 | import { class2type, toString, getProto, hasOwn, fnToString, ObjectFunctionString } from './util.js'; |
- 修改
1 | typeof target !== "function" //修改为!jQuery.isFunction(target) |
- 新增
1 | //新增修改点1,class2type注入各JS类型键值对,配合 jQuery.type 使用,后面会用上 |
修改后的文件我已经挂在了我的github中,对应文件夹是v2
.
参考阅读: